package weaver.interfaces.jjy.duss.action;

/**
 * @program: ecology-9-demo
 * @description: 往SAP推送人员入职信息
 * @author: Dusongsong
 * @create: 2019-12-07
 */


import org.apache.commons.lang.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.interfaces.jjy.duss.hr.HR093;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.RequestInfo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class WeaHRxxtsAction extends BaseBean implements Action {
    @Override
    public String execute(RequestInfo requestInfo) {
        RecordSet rs = new RecordSet();
        RecordSet rs2 = new RecordSet();
        BaseBean baseBean = new BaseBean();
        String requestid = requestInfo.getRequestid();
        baseBean.writeLog("请求ID" + requestid);
        baseBean.writeLog("调用WeaHRxxtsAction");
        String tablename = requestInfo.getRequestManager().getBillTableName();//主表
        rs.executeQuery("select * from " + tablename + " where requestid=?", requestid);
        baseBean.writeLog("select * from " + tablename + " where requestid=" + requestid);
        rs.next();
        //主表字段
        String sfzh = Util.null2String(rs.getString("sfzh"));//身份证号
        String rzrq = Util.null2String(rs.getString("rzrq").replaceAll("-", ""));//入职日期
        String xm = Util.null2String(rs.getString("xm"));//姓名
        String csrq = Util.null2String(rs.getString("csrq").replaceAll("-", ""));//出生日期
        String xb = Util.null2String(rs.getString("xb"));//性别
        String hyzk = Util.null2String(rs.getString("hyzk"));//婚姻状况
        String jkzk = Util.null2String(rs.getString("jkzkvalue"));//健康状况
        String hklx = Util.null2String(rs.getString("hklx"));//户口类型
        String yxkh = Util.null2String(rs.getString("yxkh"));//银行卡号
        String sjh = Util.null2String(rs.getString("sjh"));//手机号
        String ygh = Util.null2String(rs.getString("ygh"));//员工号
        String ksrq = Util.null2String(rs.getString("ksrq").replaceAll("-", ""));//开始日期
        String jsrq = Util.null2String(rs.getString("jsrq").replaceAll("-", ""));//结束日期
        String xxmc = Util.null2String(rs.getString("xxmc"));//学校名称
        String ACAQU = Util.null2String(rs.getString("ACAQU"));//学历
        String zy = Util.null2String(rs.getString("zy"));//专业
        String INSMO = Util.null2String(rs.getString("INSMO"));//学习形式
        String xlzsbh = Util.null2String(rs.getString("xlzsbh"));//学历证书编号
        String xwzsbh = Util.null2String(rs.getString("xwzsbh"));//学位证书编号
        String flkh1 = Util.null2String(rs.getString("flkh1"));//福利卡号
        String zzrq = Util.null2String(rs.getString("zzrq").replaceAll("-", ""));//转正日期
        String CTTYP = Util.null2String(rs.getString("CTTYP"));//合同类型
        String htksrq = Util.null2String(rs.getString("htksrq").replaceAll("-", ""));//合同开始日期
        String htzzrq = Util.null2String(rs.getString("htzzrq").replaceAll("-", ""));//合同终止日期
        String ZHR_BDLX = Util.null2String(rs.getString("ZHR_BDLX"));//合同变动类型
        String sjlxbm = Util.null2String(rs.getString("sjlxbm"));//事件类型编码
        String sjyybm = Util.null2String(rs.getString("sjyybm"));//事件原因编码
        String jgbm = Util.null2String(rs.getString("jgbm"));//籍贯编码
        String mzbm = Util.null2String(rs.getString("mzbm"));//民族编码
        String rsfwbm = Util.null2String(rs.getString("rsfwbm"));//人事范围编码
        String rszfwbm = Util.null2String(rs.getString("rszfwbm"));//人事子范围编码
        String ygzbm = Util.null2String(rs.getString("ygzbm"));//员工组编码
        String ygzzbm = Util.null2String(rs.getString("ygzzbm"));//员工子组编码
        String gzhsfwbm = Util.null2String(rs.getString("gzhsfwbm"));//工资核算范围编码
        String ZHR_WRKPL = Util.null2String(rs.getString("ZHR_WRKPL"));//合同签订单位编码
        String ldhtmbbm = Util.null2String(rs.getString("ldhtmbbm"));//劳动合同模板编码
        String xzbm = Util.null2String(rs.getString("xzbm"));//学制编码
        String gj = Util.null2String(rs.getString("gjvalue"));//国籍
        String ZHR_ZZCXY = Util.null2String(rs.getString("ZHR_ZZCXY"));//专职促销员类型
        String ZHR_YGDJ = Util.null2String(rs.getString("ZHR_YGDJ"));//员工等级
        String yxmcbm = Util.null2String(rs.getString("yxmcbm"));//银行名称编码
        String sscjbm = Util.null2String(rs.getString("sscjbm"));//所属车间编码
        String ssgcbm = Util.null2String(rs.getString("ssgcbm"));//所属工厂编码
        String sfzdz = Util.null2String(rs.getString("sfzdz"));//身份证地址
        String sfzyzbm = Util.null2String(rs.getString("sfzyzbm"));//邮政编码
        String xzz = Util.null2String(rs.getString("xzz"));//现住址
        String xzzyzbm = Util.null2String(rs.getString("xzzyzbm"));//现住址邮政编码
        String htqxy = Util.null2String(rs.getString("htqxy"));//合同期限(月)
        String zp = Util.null2String(rs.getString("zp"));//照片
        String gwfpbm = Util.null2String(rs.getString("gwfpbm"));//岗位（分配）编码
        String zwcbm = Util.null2String(rs.getString("zwcbm"));//职务簇编码
        String zwmcbm = Util.null2String(rs.getString("zwmcbm"));//职务名称编码
        String xw = Util.null2String(rs.getString("SLABS"));//学位
        String ZHR_GWXL = Util.null2String(rs.getString("ZHR_GWXL"));//职务序列

        rs2.executeQuery("select filerealpath,iszip from imagefile where imagefileid in (select imagefileid from docimagefile where docid in ('" + zp + "'))");
        rs2.next();
        String filerealpath = Util.null2String(rs2.getString("filerealpath"));
        String path = "";
        baseBean.writeLog("图片路径：" + filerealpath);
        String mainid = Util.null2String(rs.getString("id"));//外键
        //明细表1
        List<Map<String, String>> list1 = new ArrayList<>();
        rs.executeQuery("select xm,csrq,zwzw,lxdh,xxdz,ZHR_SAMER,SUBTY,gzdw from " + tablename + "_dt1 where mainid=?", mainid);
        baseBean.writeLog("select xm,csrq,zwzw,lxdh,xxdz,ZHR_SAMER,SUBTY,gzdw from " + tablename + "_dt1 where mainid=?", mainid);
        while (rs.next()) {
            String xm1 = Util.null2String(rs.getString("xm"));//姓名
            String csrq1 = Util.null2String(rs.getString("csrq").replaceAll("-", ""));//出生日期
            String zwzw1 = Util.null2String(rs.getString("zwzw"));//职位/职务
            String lxdh1 = Util.null2String(rs.getString("lxdh"));//联系电话
            String xxdz1 = Util.null2String(rs.getString("xxdz"));//详细地址
            String ZHR_SAMER = Util.null2String(rs.getString("ZHR_SAMER"));//是否工作于同一个公司
            String SUBTY = Util.null2String(rs.getString("SUBTY"));//关系类型
            String gzdw1 = Util.null2String(rs.getString("gzdw"));//工作单位
            Map<String, String> map1 = new HashMap<>();
            map1.put("FANAM", xm1);                   //姓名
            map1.put("FGBDT", csrq1);                 //生日
            map1.put("SUBTY", SUBTY);                 //关系类型
            map1.put("ZHR_DZ", xxdz1);                //详细地址
            map1.put("ZHR_GW", zwzw1);                //职位/职务
            map1.put("ZHR_GZDW", gzdw1);              //工作单位
            map1.put("ZHR_SAMER", ZHR_SAMER);         //""否X是同一公司
            map1.put("ZHR_TELNR", lxdh1);             //联系电话
            list1.add(map1);
        }
        baseBean.writeLog("传参list1=" + list1.toString());
        //明细表2
        List<Map<String, String>> list2 = new ArrayList<>();
        rs.executeQuery("select llgw,ksrq3,jsrq3,gzdw,gzbm,zw,zmr,lxdh,ZHR_JLLX from " + tablename + "_dt2 where mainid=?", mainid);
        baseBean.writeLog("select llgw,ksrq3,jsrq3,gzdw,gzbm,zw,zmr,lxdh,ZHR_JLLX from " + tablename + "_dt2 where mainid=?", mainid);
        while (rs.next()) {
            String llgw = Util.null2String(rs.getString("llgw"));//履历岗位
            String ksrq32 = Util.null2String(rs.getString("ksrq3").replaceAll("-", ""));//开始日期
            String jsrq32 = Util.null2String(rs.getString("jsrq3")).replaceAll("-", "");//结束日期
            String gzdw2 = Util.null2String(rs.getString("gzdw"));//工作单位
            String gzbm2 = Util.null2String(rs.getString("gzbm"));//工作部门
            String zw2 = Util.null2String(rs.getString("zw"));//职务
            String zmr2 = Util.null2String(rs.getString("zmr"));//证明人
            String lxdh2 = Util.null2String(rs.getString("lxdh"));//联系电话
            String jllx2 = Util.null2String(rs.getString("ZHR_JLLX"));//经历类型
            Map<String, String> map2 = new HashMap<>();
            map2.put("ARBGB", gzdw2);                //履历工作单位
            map2.put("BEGDA2", ksrq32);              //履历开始日期
            map2.put("ENDDA2", jsrq32);              //履历结束日期
            map2.put("ZHR_JOBINFO", zw2);            //履历职务
            map2.put("ZHR_PLANS", llgw);              //履历岗位
            map2.put("ZHR_JLLX", jllx2);             //经历类型，10内部，20外部
            map2.put("DEPTN", gzbm2);                //履历工作部门
            map2.put("REFCO", lxdh2);                //履历证明人电话
            map2.put("REFER", zmr2);                 //履历证明人
            list2.add(map2);
        }
        baseBean.writeLog("传参list2=" + list2.toString());
        //明细表3
        List<Map<String, String>> list3 = new ArrayList<>();
        rs.executeQuery("select QUCEG,zgmcbm,QUCEE,zsbh,pzjdjg,ksrq,jsrq from " + tablename + "_dt4 where mainid=?", mainid);
        baseBean.writeLog("select QUCEG,zgmcbm,QUCEE,zsbh,pzjdjg,ksrq,jsrq from " + tablename + "_dt4 where mainid=?", mainid);
        while (rs.next()) {
            String QUCEG = Util.null2String(rs.getString("QUCEG"));//资格类型
            String zgmcbm4 = Util.null2String(rs.getString("zgmcbm"));//资格名称编码
            String QUCEE = Util.null2String(rs.getString("QUCEE"));//资格等级
            String zsbh4 = Util.null2String(rs.getString("zsbh"));//证书编号
            String pzjdjg4 = Util.null2String(rs.getString("pzjdjg"));//批准（鉴定）机构
            String ksrq4 = Util.null2String(rs.getString("ksrq").replaceAll("-", ""));//开始日期
            String jsrq4 = Util.null2String(rs.getString("jsrq").replaceAll("-", ""));//结束日期
            Map<String, String> map3 = new HashMap<>();
            map3.put("ISEBY", pzjdjg4);                 //批准（鉴定）机构
            map3.put("QUCEC", zgmcbm4);                 //资格名称:000-工程技术人员
            map3.put("QUCEE", QUCEE);                    //资格等级:0-初级
            map3.put("QUCEG", QUCEG);                    //资格类型:0004-外语熟练程度
            map3.put("QUCEN", zsbh4);                    //证书编号
            map3.put("BEGDA3", ksrq4);                   //资格开始日期
            map3.put("ENDDA3", jsrq4);                   //资格结束日期
            list3.add(map3);
        }
        baseBean.writeLog("传参list3=" + list3.toString());
        HR093 hr093 = new HR093();
        Map<String, String> map = new HashMap<>();
        map.put("IV_PERNR", ygh);       //员工号
        if (filerealpath != null && filerealpath != "") {
            String destpath = StringUtils.substringBeforeLast(filerealpath, "/") + "/";
            //String fileName = FileUtil.unZipFiles(filerealpath, destpath);
            //path = destpath + fileName + ".jpg";
            //map.put("PS_PHOTO", FileUtil.getBinary(path));
        } else {
            map.put("PS_PHOTO", "");
        }
        map.put("BEGDA", rzrq);       //入职日期
        map.put("BEGDA4", rzrq);      //入职日期
        map.put("MASSN", sjlxbm);     //事件类型：Z0入职；Z1离职返聘；Z2退休返聘
        map.put("MASSG", sjyybm);     //事件原因：15-现场招聘
        map.put("PERNR", ygh);        //员工号，SAP提供，入职可以不填，其他人事修改等场景都需要提供员工号。
        map.put("ABKRS", gzhsfwbm);   //工资核算范围：Z6-家家悦员工（包括学生工、专职促销员）
        map.put("WERKS", rsfwbm);     //人事范围
        map.put("BTRTL", rszfwbm);    //人事子范围
        map.put("PERSG", ygzbm);      //员工组：1-正式员工
        map.put("PERSK", ygzzbm);     //员工子组：Z1-正式员工
        map.put("PLANS", gwfpbm);     //岗位
        map.put("ZHR_GWXL", ZHR_GWXL);//职务序列:20-超市序列
        map.put("ZHR_ZWC", zwcbm);    //职务簇:D-基层
        map.put("ZHR_ZW", zwmcbm);    //职务名称:D06-员工
        map.put("FAMST", hyzk);       //2-已婚
        map.put("GBDAT", csrq);       //生日
        map.put("GESCH", xb);         //2女1男
        map.put("NACHN", xm);         //姓名
        map.put("NATIO", gj);         //中国
        map.put("ZHR_JG", jgbm);      //籍贯
        map.put("ZHR_JKZK", jkzk);    //健康状况：01-健康或良好
        map.put("ZHR_MZ", mzbm);      //民族：01-汉族
        map.put("BANKL", yxmcbm);     //银行：中国工商银行-烟台-开发区
        map.put("BANKN", yxkh);       //银行账号
        if ("".equals(yxmcbm) && "".equals(yxkh)) {
            map.put("ZLSCH", "");        //发放方式
        } else {
            map.put("ZLSCH", "B");        //发放方式
        }
        map.put("CTBEG", htksrq);     //合同开始时间
        map.put("CTEDT", htzzrq);     //合同终止时间
        map.put("CTTYP", CTTYP);      //合同类型:10-有固定期限劳动合同
        if ("8004".equals(rsfwbm) || "8007".equals(rsfwbm) || "ZB01".equals(rsfwbm) || "6016".equals(rsfwbm)) {//总部员工
            if ("1".equals(ygzbm) || "3".equals(ygzbm)) {//员工组
                map.put("TERMN", zzrq);         //任务日期
                map.put("TMART", "Z3");         //任务类型
            }
        } else {
            if ("1".equals(ygzbm) || "2".equals(ygzbm)) {//员工组
                map.put("TERMN", zzrq);         //任务日期
                map.put("TMART", "Z7");         //调薪转正
            }
        }
        map.put("HUKOT", hklx);                 //户口类型：2-农业户口
        map.put("ZHR_YGDJ", ZHR_YGDJ);          //员工等级：20-一级员工
        map.put("ZHR_SSCJ", sscjbm);            //所属车间
        map.put("ZHR_SSGC", ssgcbm);            //所属工厂
        map.put("ZHR_ZZCXY", ZHR_ZZCXY);        //专职促销员类型
        map.put("ANSSA1", "9001");               //地址类型
        map.put("LOCAT1", sfzdz);                //身份证地址
        map.put("PSTLZ1", sfzyzbm);              //邮政编码
        map.put("ANSSA", "9002");              //地址类型
        map.put("LOCAT", xzz);                 //现地址
        map.put("PSTLZ", xzzyzbm);             //现地址邮政编码
        map.put("ACAQU", ACAQU);                //学历
        map.put("ANZKL", xzbm);                 //学制
        map.put("BEGDA1", ksrq);                //学历开始日期
        map.put("ENDDA1", jsrq);                //学历结束日期
        map.put("INSTI", xxmc);                 //学校名称
        map.put("SLABS", xw);                   //学位
        if (sjh == "") {
            map.put("USRTY", "");               //通讯类型：9001手机
            map.put("USRID", "");                  //手机号码

        } else {
            map.put("USRTY", "9001");               //通讯类型：9001手机
            map.put("USRID", sjh);                  //手机号码
        }
        if (flkh1 == "") {
            map.put("USRTY1", "");              //通讯类型：9002福利卡号
            map.put("USRID1", "");               //福利卡号
        } else {
            map.put("USRTY1", "9002");              //通讯类型：9002福利卡号
            map.put("USRID1", flkh1);               //福利卡号
        }

        map.put("ICNUM", sfzh);                 //证件号
        map.put("ICTYP", "01");                 //证件类别：01-身份证
        map.put("ZHR_BDLX", ZHR_BDLX);          //合同变更类型：20-续签
        map.put("ZHR_HTMB", ldhtmbbm);          //劳动合同模版：02-高密合同模板
        map.put("ZHR_QXM", htqxy);              //合同期限（月）
        map.put("ZHR_WRKPL", ZHR_WRKPL);        //合同签订单位编码
        map.put("ACCID", xwzsbh);               //学位证书编号
        map.put("ACQID", xlzsbh);               //学历证书编号
        map.put("FACH3", zy);                   //专业
        map.put("INSMO", INSMO);                //学习形式:10-全日制
        map.put("ACAQU", ACAQU);                //学历:30-本科
        baseBean.writeLog("传参map:" + map.toString());
        try {
            Map<String, String> resultMap = hr093.execute(map, list1, list2, list3);
            String flag = (String) resultMap.get("flag");
            String message = (String) resultMap.get("message");
            String pernr = (String) resultMap.get("pernr");
            baseBean.writeLog("SAP返回结果——flag:" + flag + ";message:" + message);
            baseBean.writeLog("返回的员工号=" + pernr);
            rs.executeUpdate("update " + tablename + " set   ygh= '" + pernr + "' where requestid=?", requestid);
            baseBean.writeLog("调用的SQL:" + "update " + tablename + " set   ygh= '" + pernr + "' where requestid=?", requestid);
            if ("E".equalsIgnoreCase(flag)) {
                requestInfo.getRequestManager().setMessageid("111111");
                requestInfo.getRequestManager().setMessagecontent(message);
                return Action.FAILURE_AND_CONTINUE;
            }
            return Action.SUCCESS;
        } catch (Exception e) {
            e.printStackTrace();
            baseBean.writeLog("异常参考:" + e);
            requestInfo.getRequestManager().setMessageid("111111");
            requestInfo.getRequestManager().setMessagecontent(e.getMessage());
            return Action.FAILURE_AND_CONTINUE;
        }

    }
}
